#ifndef INC_DEFINITIONS_H
#define INC_DEFINITIONS_H

//################################################################
// These definitions keep track of different algorithms doing the same thing
// Choices can differ in efficiency and/or precision, only one option for 
// each algorithm should be chosen! Having multiple definitions for the same 
// task will result in the engine prioritizing according to the order in which
// they are programmed ( unexpected results may appear! )
/*

- Line drawing algorithms
#define DRAWLINE_INCREMENTAL
#define DRAWLINE_MIDPOINT

- Polygon draw modes
#define ZBUFFERFILL
#define WIREFRAME

- Clipping algorithms
#define CLIP2D_COHENSUTHERLAND
#define CLIP3D_COHENSUTHERLAND

- Antialiasing Algorithms
#define FSAA_FULL_MULTISAMPLE

- Rendering Options
#define DRAWLINE_GRADIENT_OPT
*/

//################################################################
// These definitions keep track of debug output accros the engine, different parts 
// can provide different debug output, enable as much options as you want to.
/*

#define ASPECT_RATIO_PRINT
Retrieve extended information on aspect ratio.

#define GCFG_DEBUG
Extended debug information about the configuration class ( includes parse errors in the config file )

#define RENDER_DEBUG
Viewing transformation and scaling operation information.
*/


//################################################################
// SELECTED RENDERING OPTIONS ( make your changes here )
#define DRAWLINE_MIDPOINT
#define ZBUFFERFILL
#define CLIP2D_COHENSUTHERLAND
#define DRAWLINE_GRADIENT_OPT
#define FSAA_FULL_MULTISAMPLE

//################################################################
// DEBUG OUTPUT SELECTION ( make your changes here )
#define GCFG_DEBUG

//################################################################
// SAFETY CHECK ( do not change! )
#if !defined(ZBUFFERFILL) && !defined(WIREFRAME)
	#error "No rendering option selected!"
#endif

#if !defined(DRAWLINE_INCREMENTAL) && !defined(DRAWLINE_MIDPOINT)
	#error "No line drawing option selected!"
#endif

#if !defined(CLIP2D_COHENSUTHERLAND) && !defined(CLIP3D_COHENSUTHERLAND)
	#error "No clipping algorithm selected!"
#endif

#if defined FSAA_FULL_MULTISAMPLE
	#define	FSAA
#endif

/*##########################################################*/
#endif //INC_DEFINITIONS_H